28#include "yaml-schema-cpp/yaml_server.hpp"
48#define WOLF_LANDMARK_CREATE(LandmarkClass) \
49 static LandmarkBasePtr create(const YAML::Node& _node, const std::vector<std::string>& _folders_schema = {}) \
51 if (not _folders_schema.empty()) \
53 auto server = yaml_schema_cpp::YamlServer(_folders_schema); \
54 server.setYaml(_node); \
55 if (not server.applySchema(#LandmarkClass)) \
57 WOLF_ERROR(server.getLog()); \
60 std::shared_ptr<LandmarkClass> lmk(new LandmarkClass(server.getNode())); \
61 lmk->emplacePriors(); \
64 std::shared_ptr<LandmarkClass> lmk(new LandmarkClass(_node)); \
65 lmk->emplacePriors(); \
69#define WOLF_LANDMARK_TEMPLATE_DIM_CREATE(LandmarkClass, Dim) \
70 static LandmarkBasePtr create(const YAML::Node& _node, const std::vector<std::string>& _folders_schema = {}) \
72 if (not _folders_schema.empty()) \
74 auto server = yaml_schema_cpp::YamlServer(_folders_schema); \
75 server.setYaml(_node); \
76 if (not server.applySchema(#LandmarkClass + std::to_string(Dim) + "d")) \
78 WOLF_ERROR(server.getLog()); \
81 std::shared_ptr<LandmarkClass<Dim>> lmk(new LandmarkClass<Dim>(server.getNode())); \
82 lmk->emplacePriors(); \
85 std::shared_ptr<LandmarkClass<Dim>> lmk(new LandmarkClass<Dim>(_node)); \
86 lmk->emplacePriors(); \
97 static unsigned int landmark_id_count_;
107 void setProblem(ProblemPtr _problem)
override;
128 const int _external_id = -1,
129 const int _external_type = -1);
142 void remove(
bool viral_remove_parent_without_children =
false)
override;
144 YAML::Node
toYaml()
const override;
147 unsigned int id()
const override;
148 void setId(
unsigned int _id);
158 MapBaseConstPtr
getMap()
const;
161 void link(MapBasePtr);
162 template <
typename classType,
typename... T>
163 static std::shared_ptr<classType>
emplace(MapBasePtr _map_ptr, T&&... all);
169 std::ostream& stream,
170 std::string _tabs =
"")
const;
172 virtual void print(
int depth,
176 std::ostream& stream = std::cout,
177 std::string _tabs =
"")
const;
179 virtual CheckLog localCheck(
bool _verbose, std::ostream& _stream, std::string _tabs =
"")
const;
180 virtual bool check(
CheckLog& _log,
bool _verbose, std::ostream& _stream, std::string _tabs =
"")
const;
183 void setMap(
const MapBasePtr _map_ptr);
197template <
typename classType,
typename... T>
200 std::shared_ptr<classType> lmk = std::make_shared<classType>(std::forward<T>(all)...);
201 lmk->emplacePriors();
208 return map_ptr_.lock();
213 return map_ptr_.lock();
216inline void LandmarkBase::setMap(
const MapBasePtr _map_ptr)
229 if (_id > landmark_id_count_) landmark_id_count_ = _id;
264 return std::static_pointer_cast<LandmarkBase>(shared_from_this());
269 return std::static_pointer_cast<const LandmarkBase>(shared_from_this());
Definition: check_log.h:28
Definition: factor_base.h:72
Definition: landmark_base.h:92
void setProblem(ProblemPtr _problem) override
Definition: landmark_base.cpp:107
int getExternalId() const
Definition: landmark_base.h:247
unsigned int track_id_
associated track id
Definition: landmark_base.h:101
int external_type_
Type provided by an external classifier (-1 unclassified)
Definition: landmark_base.h:103
int external_id_
Id provided by an external tracker (-1 untracked)
Definition: landmark_base.h:102
void setTrackId(unsigned int _track_id)
Definition: landmark_base.h:237
unsigned int id() const override
Definition: landmark_base.h:221
LandmarkBase(const std::string &_type, const TypeComposite &_state_types, const VectorComposite &_state_vectors, const PriorComposite &_state_priors, const int _external_id=-1, const int _external_type=-1)
Constructor type and state specs composites (types, vectors, priors)
Definition: landmark_base.cpp:28
virtual void print(int depth, bool factored_by, bool metric, bool state_blocks, std::ostream &stream=std::cout, std::string _tabs="") const
Definition: landmark_base.cpp:133
MapBaseConstPtr getMap() const
Definition: landmark_base.h:206
int getExternalType() const
Definition: landmark_base.h:257
unsigned int landmark_id_
landmark unique id
Definition: landmark_base.h:100
YAML::Node toYaml() const override
Definition: landmark_base.cpp:77
virtual void printHeader(int depth, bool factored_by, bool metric, bool state_blocks, std::ostream &stream, std::string _tabs="") const
Definition: landmark_base.cpp:114
void setExternalType(const int &_external_type)
Definition: landmark_base.h:252
void remove(bool viral_remove_parent_without_children=false) override
Definition: landmark_base.cpp:57
LandmarkBasePtr shared_from_this_landmark()
Definition: landmark_base.h:262
virtual bool check(CheckLog &_log, bool _verbose, std::ostream &_stream, std::string _tabs="") const
Definition: landmark_base.cpp:174
virtual CheckLog localCheck(bool _verbose, std::ostream &_stream, std::string _tabs="") const
Definition: landmark_base.cpp:143
TimeStamp stamp_
stamp of the creation of the landmark
Definition: landmark_base.h:104
void link(MapBasePtr)
Definition: landmark_base.cpp:90
void setId(unsigned int _id)
Definition: landmark_base.h:226
~LandmarkBase() override=default
unsigned int trackId()
Definition: landmark_base.h:232
void setExternalId(const int &_external_id)
Definition: landmark_base.h:242
static std::shared_ptr< classType > emplace(MapBasePtr _map_ptr, T &&... all)
Definition: landmark_base.h:198
Definition: node_state_blocks.h:32
TimeStamp implements basic functionalities for time stamps.
Definition: time_stamp.h:39
Definition: vector_composite.h:27
Definition: capture_base.h:23